// Observer.cpp: implementation of the Observer class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Observer.h"

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Observer::Observer()
{
}

Observer::~Observer()
{
}

Subject::Subject()
{
}

Subject::~Subject()
{
}

void Subject::Attach(Observer * pObserver)
{
	m_Observers.push_back(pObserver);
}

void Subject::Detach(Observer * pObserver)
{
	m_Observers.erase(std::remove(m_Observers.begin(), m_Observers.end(), pObserver), m_Observers.end());
}

void Subject::Notify()
{
	std::list<Observer *>::const_iterator iter;
	for (iter = m_Observers.begin();iter != m_Observers.end();++iter)
	{
		Observer * pObserver = *iter;
		pObserver->Update(this);
	}
}